#include <stdio.h>
void print_name(void);
void print_address(void);
void print_age_in_days(void);
void print_lyrics_jolly(void);
void print_lyrics_deny(void);
void print_br_ic(void);
void print_toes(void);
void print_smile(int count);
void one_three(void);

int main(void){
    // print_name();
    // print_address();
    // print_age_in_days();
    // print_lyrics_jolly();
    // print_lyrics_deny();
    // print_br_ic();
    // print_toes();
    // print_smile(3);
    printf("starting now:\n");
    one_three();
    return 0;
}

//编写一个程序，调用一次printf()函数，把你的名和姓打印在一行。再调用一次printf()函数，把你的名和姓分别打印在两行。然后，再调用两次printf()函数，把你的名和姓打印在一行。输出应如下所示（当然要把示例的内容换成你的名字）
void print_name(void){
    char name[10],surname[10];
    printf("请输入名字：");
    scanf("%s",name);
    printf("请输入姓：");
    scanf("%s",surname);
    printf("%s %s\n",name,surname);
    printf("%s\n%s\n",name,surname);
    printf("%s",name);
    printf(" %s\n",surname);
}

//编写一个程序，打印你的姓名和地址
void print_address(void){
    char name[50];
    char address[100];
    
    printf("请输入您的姓名：");
    scanf("%s", name);
    printf("请输入您的地址：");
    // 使用 getchar() 消耗之前的换行符
    getchar();
    // 使用 fgets 读取可能包含空格的地址
    fgets(address, 100, stdin);
    
    printf("\n您的信息如下：\n");
    printf("姓名：%s\n", name);
    printf("地址：%s", address);
}

//编写一个程序把你的年龄转换成天数，并显示这两个值。这里不用考虑闰年的问题
void print_age_in_days(void){
    int age;
    printf("请输入你的年龄：");
    scanf("%d", &age);
    
    int days = age * 365;
    printf("你的年龄是：%d岁\n", age);
    printf("换算成天数是：%d天\n", days);
}

/*
编写一个程序，生成以下输出：
For he's a jolly good fellow!
For he's a jolly good fellow!
For he's a jolly good fellow!
Which nobody can deny!
除了main() 函数以外，该程序还要调用两个自定义函数：一个名为jolly() ，用于打印前3 条消息，调用一次打印一条；另一个函数名为deny() ，打印最后一条消息。
*/

void print_lyrics_jolly(void){
    printf("For he's a jolly good fellow!\n");
    printf("For he's a jolly good fellow!\n");
    printf("For he's a jolly good fellow!\n");
}

void print_lyrics_deny(void){
    printf("Which nobody can deny!\n");
}

/*
编写一个程序，生成以下输出:
Brazil, Russia, India, China
India, China
Brazil, Russia
除了main() 以外，该程序还要调用两个自定义函数：一个名为br() ，调用一次打印一次“Brazil, Russia ”；另一个名为ic() ，调用一次打印一次“India, China ”。其他内容在main() 函数中完成
*/
void print_br(void){
    printf("Brazil, Russia ");
}
void print_ic(void){
    printf("India, China ");
}
void print_br_ic(void){
    print_br();
    printf(",");
    print_ic();
    printf("\n");
    print_ic();
    printf("\n");
    print_br();
    printf("\n");
}

//编写一个程序，创建一个整型变量toes ，并将toes 设置为10 。程序中还要计算toes 的两倍和toes 的平方。该程序应打印3 个值，并分别描述以示区分
void print_toes(void){
    int toes = 10;
    int double_toes = toes * 2;
    int square_toes = toes * toes;
    
    printf("toes: %d\n", toes);
    printf("toes的两倍: %d\n", double_toes);
    printf("toes的平方: %d\n", square_toes);
}

/*
许多研究表明，微笑益处多多。编写一个程序，生成以下格式的输出：
Smile!Smile!Smile!
Smile!Smile!
Smile!
该程序要定义一个函数，该函数被调用一次打印一次“Smile! ”，根据程序的需要使用该函数。
*/

void print_smile(int count){
    for(int i = 0; i < count; i++){
        printf("Smile!");
    }
    printf("\n");
}

/*
在C语言中，函数可以调用另一个函数。编写一个程序，调用一个名为one_three() 的函数。该函数在一行打印单词“one ”，再调用第2 个函数two() ，然后在另一行打印单词“three ”。two() 函数在一行显示单词“two ”。main() 函数在调用one_three() 函数前要打印短语“starting now: ”，并在调用完毕后显示短语“done! ”。因此，该程序的输出应如下所示
starting now:
one
two
three
done!
*/
void two(void){
    printf("two\n");
}

void one_three(void){
    printf("one\n");
    two();
    printf("three\n");
}
